<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OpenMesh: OpenMesh::Decimater::ModBaseT&lt; MeshT &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="logo_align.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="rwth_vci_rgb.jpg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">OpenMesh
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a02661.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="a02658.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">OpenMesh::Decimater::ModBaseT&lt; MeshT &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Base class for all decimation modules.  
 <a href="a02661.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00575_source.html">OpenMesh/Tools/Decimater/ModBaseT.hh</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for OpenMesh::Decimater::ModBaseT&lt; MeshT &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a02660.png" border="0" usemap="#OpenMesh_1_1Decimater_1_1ModBaseT_3_01MeshT_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="OpenMesh_1_1Decimater_1_1ModBaseT_3_01MeshT_01_4_inherit__map" id="OpenMesh_1_1Decimater_1_1ModBaseT_3_01MeshT_01_4_inherit__map">
<area shape="rect" id="node2" href="a02693.html" title="ModQuadricT\&lt; D \&gt;" alt="" coords="243,5,377,32"/>
<area shape="rect" id="node3" href="a02653.html" title="Use aspect ratio to control decimation. " alt="" coords="211,57,409,98"/>
<area shape="rect" id="node4" href="a02665.html" title="Use edge length to control decimation. " alt="" coords="212,122,408,163"/>
<area shape="rect" id="node5" href="a02669.html" title="Use Hausdorff distance to control decimation. " alt="" coords="218,187,402,229"/>
<area shape="rect" id="node6" href="a02673.html" title="Lock one&#45;ring around remaining vertex after a collapse to prevent further collapses of halfedges inci..." alt="" coords="229,253,391,309"/>
<area shape="rect" id="node7" href="a02677.html" title="Use Normal deviation to control decimation. " alt="" coords="230,333,390,389"/>
<area shape="rect" id="node8" href="a02681.html" title="Decimating module to avoid flipping of faces. " alt="" coords="233,413,387,469"/>
<area shape="rect" id="node9" href="a02685.html" title="Collect progressive mesh information while decimating. " alt="" coords="217,494,403,535"/>
<area shape="rect" id="node10" href="a02693.html" title="Mesh decimation module computing collapse priority based on error quadrics. " alt="" coords="224,559,396,601"/>
<area shape="rect" id="node12" href="a02697.html" title="Use Roundness of triangles to control decimation. " alt="" coords="213,625,407,666"/>
<area shape="rect" id="node11" href="a01961.html" title="ModBalancerT\&lt; D \&gt;" alt="" coords="457,567,597,593"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a49500127c96591367298aa17e8527e44"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="a02661.html#a49500127c96591367298aa17e8527e44afc88837943f46ccbf0ef35d3fcf9c5b1">ILLEGAL_COLLAPSE</a> = -1, 
<a class="el" href="a02661.html#a49500127c96591367298aa17e8527e44a2b521064f4abfdfb6eb5464308b6f6e7">LEGAL_COLLAPSE</a> = 0
 }</td></tr>
<tr class="separator:a49500127c96591367298aa17e8527e44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a859ae4de39db6d7e9d1a1ad1335fb897"><td class="memItemLeft" align="right" valign="top"><a id="a859ae4de39db6d7e9d1a1ad1335fb897"></a>
typedef MeshT&#160;</td><td class="memItemRight" valign="bottom"><b>Mesh</b></td></tr>
<tr class="separator:a859ae4de39db6d7e9d1a1ad1335fb897"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cc9f0b0682dbead98929e929e18d2cf"><td class="memItemLeft" align="right" valign="top"><a id="a8cc9f0b0682dbead98929e929e18d2cf"></a>
typedef <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CollapseInfo</b></td></tr>
<tr class="separator:a8cc9f0b0682dbead98929e929e18d2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab2e5893b8418b3bbf4c88fc5cb7b75e5"><td class="memItemLeft" align="right" valign="top"><a id="ab2e5893b8418b3bbf4c88fc5cb7b75e5"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#ab2e5893b8418b3bbf4c88fc5cb7b75e5">~ModBaseT</a> ()</td></tr>
<tr class="memdesc:ab2e5893b8418b3bbf4c88fc5cb7b75e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual desctructor. <br /></td></tr>
<tr class="separator:ab2e5893b8418b3bbf4c88fc5cb7b75e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add0059ed0204bb8ec2fce853d509d1aa"><td class="memItemLeft" align="right" valign="top"><a id="add0059ed0204bb8ec2fce853d509d1aa"></a>
virtual const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#add0059ed0204bb8ec2fce853d509d1aa">name</a> () const</td></tr>
<tr class="memdesc:add0059ed0204bb8ec2fce853d509d1aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set module's name. <br /></td></tr>
<tr class="separator:add0059ed0204bb8ec2fce853d509d1aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c102bc43acb81911c27024032b48b02"><td class="memItemLeft" align="right" valign="top"><a id="a1c102bc43acb81911c27024032b48b02"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a1c102bc43acb81911c27024032b48b02">is_binary</a> (void) const</td></tr>
<tr class="memdesc:a1c102bc43acb81911c27024032b48b02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if criteria returns a binary value. <br /></td></tr>
<tr class="separator:a1c102bc43acb81911c27024032b48b02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36fbc3ecb0b707e2087aea565c5bd6b5"><td class="memItemLeft" align="right" valign="top"><a id="a36fbc3ecb0b707e2087aea565c5bd6b5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a36fbc3ecb0b707e2087aea565c5bd6b5">set_binary</a> (bool _b)</td></tr>
<tr class="memdesc:a36fbc3ecb0b707e2087aea565c5bd6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether module is binary or not. <br /></td></tr>
<tr class="separator:a36fbc3ecb0b707e2087aea565c5bd6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c6972aeffef98839951846051690c0b"><td class="memItemLeft" align="right" valign="top"><a id="a2c6972aeffef98839951846051690c0b"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a2c6972aeffef98839951846051690c0b">initialize</a> ()</td></tr>
<tr class="memdesc:a2c6972aeffef98839951846051690c0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize module-internal stuff. <br /></td></tr>
<tr class="separator:a2c6972aeffef98839951846051690c0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb81c6b9a752741fce2366ca605cd14c"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c">collapse_priority</a> (const <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt; &amp;)</td></tr>
<tr class="memdesc:acb81c6b9a752741fce2366ca605cd14c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return collapse priority.  <a href="#acb81c6b9a752741fce2366ca605cd14c">More...</a><br /></td></tr>
<tr class="separator:acb81c6b9a752741fce2366ca605cd14c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d6aa846add0068b1e2bd7005e60edb4"><td class="memItemLeft" align="right" valign="top"><a id="a4d6aa846add0068b1e2bd7005e60edb4"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a4d6aa846add0068b1e2bd7005e60edb4">preprocess_collapse</a> (const <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt; &amp;)</td></tr>
<tr class="memdesc:a4d6aa846add0068b1e2bd7005e60edb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Before _from_vh has been collapsed into _to_vh, this method will be called. <br /></td></tr>
<tr class="separator:a4d6aa846add0068b1e2bd7005e60edb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b79ddfa2e7771572dd558c928edcdeb"><td class="memItemLeft" align="right" valign="top"><a id="a9b79ddfa2e7771572dd558c928edcdeb"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a9b79ddfa2e7771572dd558c928edcdeb">postprocess_collapse</a> (const <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt; &amp;)</td></tr>
<tr class="memdesc:a9b79ddfa2e7771572dd558c928edcdeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">After _from_vh has been collapsed into _to_vh, this method will be called. <br /></td></tr>
<tr class="separator:a9b79ddfa2e7771572dd558c928edcdeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f1b2156b44cff425dd758e84218f0db"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a3f1b2156b44cff425dd758e84218f0db">set_error_tolerance_factor</a> (double _factor)</td></tr>
<tr class="memdesc:a3f1b2156b44cff425dd758e84218f0db"><td class="mdescLeft">&#160;</td><td class="mdescRight">This provides a function that allows the setting of a percentage of the original contraint.  <a href="#a3f1b2156b44cff425dd758e84218f0db">More...</a><br /></td></tr>
<tr class="separator:a3f1b2156b44cff425dd758e84218f0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac434e4c53a1502b51c9bf8f79214727e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#ac434e4c53a1502b51c9bf8f79214727e">ModBaseT</a> (MeshT &amp;_mesh, bool _is_binary)</td></tr>
<tr class="memdesc:ac434e4c53a1502b51c9bf8f79214727e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="#ac434e4c53a1502b51c9bf8f79214727e">More...</a><br /></td></tr>
<tr class="separator:ac434e4c53a1502b51c9bf8f79214727e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b4ef38dac53440f7a01402a6844722a"><td class="memItemLeft" align="right" valign="top"><a id="a4b4ef38dac53440f7a01402a6844722a"></a>
MeshT &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02661.html#a4b4ef38dac53440f7a01402a6844722a">mesh</a> ()</td></tr>
<tr class="memdesc:a4b4ef38dac53440f7a01402a6844722a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the mesh associated with the decimater. <br /></td></tr>
<tr class="separator:a4b4ef38dac53440f7a01402a6844722a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a3893f0f6368f1a1fe5e37f6006d72d62"><td class="memItemLeft" align="right" valign="top"><a id="a3893f0f6368f1a1fe5e37f6006d72d62"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>error_tolerance_factor_</b></td></tr>
<tr class="separator:a3893f0f6368f1a1fe5e37f6006d72d62"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename MeshT&gt;<br />
class OpenMesh::Decimater::ModBaseT&lt; MeshT &gt;</h3>

<p>Base class for all decimation modules. </p>
<p>Each module has to implement this interface. To build your own module you have to</p><ol type="1">
<li>derive from this class.</li>
<li>create the basic settings with <a class="el" href="a00575.html#ae1f2d4c274e420c0e81d52cf17cc1c5b" title="Convenience macro, to be used in derived modules The macro defines the types. ">DECIMATING_MODULE()</a>.</li>
<li>override <a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c" title="Return collapse priority. ">collapse_priority()</a>, if necessary.</li>
<li>override <a class="el" href="a02661.html#a2c6972aeffef98839951846051690c0b" title="Initialize module-internal stuff. ">initialize()</a>, if necessary.</li>
<li>override <a class="el" href="a02661.html#a9b79ddfa2e7771572dd558c928edcdeb" title="After _from_vh has been collapsed into _to_vh, this method will be called. ">postprocess_collapse()</a>, if necessary.</li>
</ol>
<p>A module has two major working modes:</p><ol type="1">
<li>binary mode</li>
<li>non-binary mode</li>
</ol>
<p>In the binary mode <a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c" title="Return collapse priority. ">collapse_priority()</a> checks a constraint and returns LEGAL_COLLAPSE or ILLEGAL_COLLAPSE.</p>
<p>In the non-binary mode the module computes a float error value in the range [0, inf) and returns it. In the case a constraint has been set, e.g. the error must be lower than a upper bound, and the constraint is violated, <a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c" title="Return collapse priority. ">collapse_priority()</a> must return ILLEGAL_COLLAPSE.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c" title="Return collapse priority. ">collapse_priority()</a></dd></dl>
<dl class="todo"><dt><b><a class="el" href="a01226.html#_todo000004">Todo:</a></b></dt><dd>"Tutorial on building a custom decimation module."</dd></dl>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a49500127c96591367298aa17e8527e44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49500127c96591367298aa17e8527e44">&#9670;&nbsp;</a></span>anonymous enum</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a49500127c96591367298aa17e8527e44afc88837943f46ccbf0ef35d3fcf9c5b1"></a>ILLEGAL_COLLAPSE&#160;</td><td class="fielddoc"><p>indicates an illegal collapse </p>
</td></tr>
<tr><td class="fieldname"><a id="a49500127c96591367298aa17e8527e44a2b521064f4abfdfb6eb5464308b6f6e7"></a>LEGAL_COLLAPSE&#160;</td><td class="fielddoc"><p>indicates a legal collapse </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ac434e4c53a1502b51c9bf8f79214727e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac434e4c53a1502b51c9bf8f79214727e">&#9670;&nbsp;</a></span>ModBaseT()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02661.html">OpenMesh::Decimater::ModBaseT</a>&lt; MeshT &gt;::<a class="el" href="a02661.html">ModBaseT</a> </td>
          <td>(</td>
          <td class="paramtype">MeshT &amp;&#160;</td>
          <td class="paramname"><em>_mesh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>_is_binary</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default constructor. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a04316.html">Mesh Decimation Framework</a> </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acb81c6b9a752741fce2366ca605cd14c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb81c6b9a752741fce2366ca605cd14c">&#9670;&nbsp;</a></span>collapse_priority()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual float <a class="el" href="a02661.html">OpenMesh::Decimater::ModBaseT</a>&lt; MeshT &gt;::collapse_priority </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a02633.html">CollapseInfoT</a>&lt; MeshT &gt; &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Return collapse priority. </p>
<p>In the binary mode <a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c" title="Return collapse priority. ">collapse_priority()</a> checks a constraint and returns LEGAL_COLLAPSE or ILLEGAL_COLLAPSE.</p>
<p>In the non-binary mode the module computes a float error value in the range [0, inf) and returns it. In the case a constraint has been set, e.g. the error must be lower than a upper bound, and the constraint is violated, <a class="el" href="a02661.html#acb81c6b9a752741fce2366ca605cd14c" title="Return collapse priority. ">collapse_priority()</a> must return ILLEGAL_COLLAPSE.</p>
<dl class="section return"><dt>Returns</dt><dd>Collapse priority in the range [0,inf), <code>LEGAL_COLLAPSE</code> or <code>ILLEGAL_COLLAPSE</code>. </dd></dl>

<p>Reimplemented in <a class="el" href="a02677.html#aa199f3f2299fc171b332dc8fc59d543a">OpenMesh::Decimater::ModNormalDeviationT&lt; MeshT &gt;</a>, <a class="el" href="a02681.html#ab5ce17cb288557dcc39588d7a8b0c9b8">OpenMesh::Decimater::ModNormalFlippingT&lt; MeshT &gt;</a>, <a class="el" href="a02669.html#a4007236e4aad92985de4e5e37a088e0a">OpenMesh::Decimater::ModHausdorffT&lt; MeshT &gt;</a>, <a class="el" href="a02697.html#a8cca90f7cddf16a1df74ff9255412698">OpenMesh::Decimater::ModRoundnessT&lt; MeshT &gt;</a>, <a class="el" href="a02693.html#af4ac05dd987deba4903b419bd053a3ef">OpenMesh::Decimater::ModQuadricT&lt; MeshT &gt;</a>, <a class="el" href="a02693.html#af4ac05dd987deba4903b419bd053a3ef">OpenMesh::Decimater::ModQuadricT&lt; D &gt;</a>, and <a class="el" href="a02665.html#ac051bac3cde9afe41507514755b95d03">OpenMesh::Decimater::ModEdgeLengthT&lt; MeshT &gt;</a>.</p>

</div>
</div>
<a id="a3f1b2156b44cff425dd758e84218f0db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f1b2156b44cff425dd758e84218f0db">&#9670;&nbsp;</a></span>set_error_tolerance_factor()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename MeshT&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="a02661.html">OpenMesh::Decimater::ModBaseT</a>&lt; MeshT &gt;::set_error_tolerance_factor </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>_factor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This provides a function that allows the setting of a percentage of the original contraint. </p>
<p>Note that the module might need to be re-initialized again after setting the percentage </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_factor</td><td>has to be in the closed interval between 0.0 and 1.0 </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented in <a class="el" href="a02677.html#a30869e4cdeabe62e162b75355863c415">OpenMesh::Decimater::ModNormalDeviationT&lt; MeshT &gt;</a>, <a class="el" href="a02697.html#afa0dca4d9da5196185dc4ffbedd30a39">OpenMesh::Decimater::ModRoundnessT&lt; MeshT &gt;</a>, <a class="el" href="a02681.html#aa6fa1dd584e10ab26faca53cc9305357">OpenMesh::Decimater::ModNormalFlippingT&lt; MeshT &gt;</a>, <a class="el" href="a02693.html#ab2b6ff0a7d2c8c4524b8a1a90e3fd7a8">OpenMesh::Decimater::ModQuadricT&lt; MeshT &gt;</a>, <a class="el" href="a02693.html#ab2b6ff0a7d2c8c4524b8a1a90e3fd7a8">OpenMesh::Decimater::ModQuadricT&lt; D &gt;</a>, <a class="el" href="a02669.html#aacd7271a89147a2a238105839cda26f0">OpenMesh::Decimater::ModHausdorffT&lt; MeshT &gt;</a>, <a class="el" href="a02653.html#abcd5fb392984964b01589f5556b6243b">OpenMesh::Decimater::ModAspectRatioT&lt; MeshT &gt;</a>, and <a class="el" href="a02665.html#a34aef5589f477365f74d68afb101874a">OpenMesh::Decimater::ModEdgeLengthT&lt; MeshT &gt;</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>OpenMesh/Tools/Decimater/<a class="el" href="a00575_source.html">ModBaseT.hh</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<hr>
<address>
<small>
<a href="http://www.rwth-graphics.de" style="text-decoration:none;">
</a>
Project <b>OpenMesh</b>, 
&copy;&nbsp; Computer Graphics Group, RWTH Aachen.
Documentation generated using 
<a class="el" href="http://www.doxygen.org/index.html">
<b>doxygen</b>
</a>.
</small>
</address>
</body>
</html>
